UCP/UCT/IB: Add per-endpoint traffic class (DSCP) for RC/RoCE (QOS)#11618
Open
ybenvidia wants to merge 4 commits into
Open
UCP/UCT/IB: Add per-endpoint traffic class (DSCP) for RC/RoCE (QOS)#11618ybenvidia wants to merge 4 commits into
ybenvidia wants to merge 4 commits into
Conversation
Add an optional per-endpoint traffic class programmed onto the RC mlx5 QP, so endpoints can be tagged with a distinct DSCP (RoCEv2) or GRH traffic class (IB) for fabric QoS. - API: ucp_ep_params.ep_traffic_class + UCP_EP_PARAM_FIELD_EP_TRAFFIC_CLASS - UCT: uct_ep_connect_to_ep_params_t.ep_traffic_class + UCT_EP_CONNECT_TO_EP_PARAM_FIELD_EP_TRAFFIC_CLASS - Plumb UCP ep params -> wireup -> rc mlx5 devx QP (primary_address_path.dscp for RoCEv2, .tclass for IB); default behavior unchanged when unset - Sentinels UCP_EP_NO_TCLASS / UCT_EP_NO_TCLASS - Java binding constant
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Add an optional per-endpoint traffic class that is programmed onto the
RC mlx5 QP, so different endpoints/flows can be tagged with a different
DSCP (RoCEv2) or GRH traffic class (IB) for fabric QoS/arbitration.
Why
QoS use cases (e.g. prioritizing one UCC team / process-group over another)
need to set a distinct DSCP per set of connections. UCX previously only had
a single iface-wide
UCX_IB_TRAFFIC_CLASS; there was no way to select thetraffic class per endpoint at connect time.
Changes
ucp_ep_params.ep_traffic_classfield, enabled withUCP_EP_PARAM_FIELD_EP_TRAFFIC_CLASS.uct_ep_connect_to_ep_params_t.ep_traffic_classfield, enabledwith
UCT_EP_CONNECT_TO_EP_PARAM_FIELD_EP_TRAFFIC_CLASS.ucp_ep_adjust_params→UCP_EP_FLAG_EP_TRAFFIC_CLASS→wireup (
ucp_wireup_connect_local,ucp_wireup_ep_connect_to_ep_v2) →uct_rc_mlx5_iface_common_devx_connect_qp.primary_address_path.dscp(RoCEv2) orprimary_address_path.tclass(IB, when GRH present). When the field is notset, behavior is unchanged (falls back to the iface default DSCP/tclass).
UCP_EP_NO_TCLASS/UCT_EP_NO_TCLASSfor "not set".Compatibility
Fully opt-in and backward compatible: without the field mask bit, the QP is
programmed exactly as before.
Testing
ucc_perftestwith a per-team traffic class, verified end-to-end:the value set at connect time is written to the QP
primary_address_path.dscp(checked value tracks the input, e.g. 24 → 37).
RDMA sniffer show the configured DSCP in the IP header (DSCP 37 → ToS 0x94).
service connections keep the default.